home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
language
/
embedded
/
m68k
/
tutor.arc
/
B.SA
< prev
next >
Wrap
Text File
|
1990-01-05
|
6KB
|
178 lines
B IDNT 1,1 Init Vectors+Ram 05/29/82
XDEF ADDRMSG . 1,1
XDEF BERRMSG . 1,1
XDEF INITHRAM
XDEF INIT
XDEF VECTBE
XDEF WHAT
XDEF MSG
XDEF ERROR
XDEF FIRST
XDEF FIXDATA
XDEF FIXDADD
XDEF FIXD2
XDEF FIXDCRLF
XDEF MSGEOT
XDEF MSG008E
XDEF MSG008
XDEF PPHY
XDEF P2PHY
XDEF P2PHY2
XDEF SYNTAX
XDEF V2
XDEF WHAT93
SPC 1
XREF.S AV2
XREF.S AV3
XREF.S BERRD
XREF.S BEGHRAM
XREF.S BUFFER
XREF.S ENDHRAM
XREF EVECT2
XREF FIXBUF
XREF MACSBUG
XREF OUT1CR
XREF OUTPUT
XREF PNT4HX
XREF PNT8HX
XREF.S REGA7
XREF SAVE
XREF START
XREF.S TEMP
XREF TRACE
XREF.S TRACEON
EOT EQU 4
SPC 1
ADDR2MEM MACRO
PEA \1(PC) MOVE ADDRESS TO MEMORY; POSITION
MOVE.L (A7)+,\2 INDEPENDANT = TO "MOVE.L #\1,\2"
ENDM
SPC 1
SAVEREGS MACRO
MOVE.L A7,REGA7 SAVE STACK POINTER
LEA SV\@(PC),A7 A7 = RETURN ADDRESS (FOR CALL TO SAVE)
MOVE.L A7,TEMP TEMP = RETURN ADDRESS
BRA SAVE BSR WITHOUT USING STACK
SV\@ DS 0
SPC 1
ENDM
PAGE
SECTION 5
SPC 2
FIRST DC.L REGA7 SUPERVISOR STACK
DC.L START PROGRAM COUNTER
V2 BRA.L TRACE
SPC 3
**********************************
* INITIALIZE HIGH RAM SUBROUTINE *
**********************************
SPC 1
INITHRAM LEA BEGHRAM,A0 START OF WORK RAM (PAST REGISTERS)
MOVE.L #(ENDHRAM-BEGHRAM),D0 BYTES TO ZERO GMP 8-11-81
CLR.L D1
INIT MOVE.B D1,(A0)+ ZERO MEMORY
SUB.L #1,D0
BNE INIT
SPC 3
ADDR2MEM BERRMSG,AV2 POINT AT BUS TRAP ERROR MESSAGE ROUTINE
ADDR2MEM ADDRMSG,AV3 POINT AT ADDRESS TRAP ERROR MESSAGE ROUTINE
SECTION 6
RTS
PAGE
****************************************************
* SPECIAL HANDLING FOR BUS ERROR AND ADDRESS ERROR *
****************************************************
BERRMSG MOVE.L #'BUS ',$30
BRA.S VECTBE
ADDRMSG MOVE.L #'ADDR',$30
VECTBE MOVE.L (A7)+,BERRD
MOVE.L (A7)+,BERRD+4
SPC 1
SAVEREGS
BSR FIXBUF
MOVE.W #$D0A,(A6)+
MOVE.W BERRD,D0
BSR PNT4HX FORMAT FUNCTION CODE
SPC 1
MOVE.B #' ',(A6)+ SPACE
MOVE.L BERRD+2,D0
BSR PNT8HX FORMAT ACCESS ADDRESS
SPC 1
MOVE.B #' ',(A6)+ SPACE
MOVE.W BERRD+6,D0
BSR PNT4HX FORMAT INSTRUCTION REGISTER
SPC 1
BSR OUTPUT
BRA EVECT2 GO DISPLAY REGISTERS & PROMPT
PAGE
MSG008 DC.B 'SYNTAX '
MSG008E DC.B 'ERROR '
MSGEOT DC.B EOT
SPC 1
MSG021 DC.B 'WHAT',EOT
SPC 1
* PRINT WHAT
WHAT LEA MSG021(PC),A5 PRINT 'WHAT' AND ENTER MACSBUG
WHAT93 BSR.S FIXDATA
CLR.W TRACEON
MSG BSR OUT1CR
BRA MACSBUG
SPC 1
* PRINT ERROR
ERROR LEA MSG008E(PC),A5
BRA WHAT93
SPC 1
SYNTAX LEA MSG008(PC),A5 'SYNTAX ERROR'
BRA WHAT93
PAGE
* FORMAT PHYSICAL ADDRESS FROM (D0)
PPHY LEA MSG019(PC),A5
BSR.S FIXDATA
BRA.S P2PHY2
SPC 1
* FORMAT TWO PHYSICAL ADDRESSES FROM (A0) & (A1)
P2PHY LEA MSG019(PC),A5 'PHYSICAL ADDRESS='
BSR.S FIXDATA
MOVE.L A0,D0
BSR PNT8HX FORMAT ADDR1
MOVE.B #' ',(A6)+ SPACE FOR FORMATING
MOVE.L A1,D0
P2PHY2 BSR PNT8HX FORMAT ADDR2
BSR OUT1CR DISPLAY IT
RTS
SPC 1
MSG019 DC.B 'PHYSICAL ADDRESS=',EOT
PAGE
*************************************************************
* -FIXDATA- SUBROUTINE... MOVES MESSAGE POINTED TO BY (A5) *
* INTO "BUFFER". EOT, ($04), ENDS *
* THE MOVE. AT COMPLETION (A5) IS *
* POINTING AT THE BEGINNING, (A6) *
* POINTS AT END. *
*************************************************************
SPC 1
FIXDATA LEA BUFFER,A6
FIXDADD CMP.B #EOT,(A5)
BEQ.S FIXD2
MOVE.B (A5)+,(A6)+
BRA FIXDADD
FIXD2 LEA BUFFER,A5
RTS
SPC 1
************************************************************
* -FIXDCRLF- SUBROUTINE INSERTS A CARRIAGE RETURN AND LINE *
* FEED IN FRONT OF THE TEXT, THEN *
* USES THE REMAINING PORTION OF THE *
* FIXDATA. *
************************************************************
FIXDCRLF LEA BUFFER,A6
MOVE.W #$0D0A,(A6)+ CR,LF
BRA FIXDADD
SPC 1
END